/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.edu.upc.dew.serviciosmultiples.controller;

import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
import pe.edu.upc.dew.serviciosmultiples.exception.ServiceException;
import pe.edu.upc.dew.serviciosmultiples.model.Servicio;
import pe.edu.upc.dew.serviciosmultiples.model.Solicitud;
import pe.edu.upc.dew.serviciosmultiples.model.Usuario;
import pe.edu.upc.dew.serviciosmultiples.service.ServicioService;
import pe.edu.upc.dew.serviciosmultiples.service.SolicitudService;
import static pe.edu.upc.dew.serviciosmultiples.util.Constants.SERVICIO_LIST;
import static pe.edu.upc.dew.serviciosmultiples.util.Constants.USUARIO_ACT;
import static pe.edu.upc.dew.serviciosmultiples.util.Constants.FECHA_ACT;

/**
 *
 * @author bcano
 */
public class SolicitudClienteController extends MultiActionController {
    protected final Log logger = LogFactory.getLog(getClass());

    private SolicitudService solicitudService;
    private ServicioService servicioService;

    public SolicitudService getSolicitudService() {
        return solicitudService;
    }

    public void setSolicitudService(SolicitudService solicitudService) {
        this.solicitudService = solicitudService;
    }

    public ServicioService getServicioService() {
        return servicioService;
    }

    public void setServicioService(ServicioService servicioService) {
        this.servicioService = servicioService;
    }

    public ModelAndView index(HttpServletRequest request, HttpServletResponse response, Solicitud solicitudForm) throws ServiceException {
        ModelAndView modelAndView = new ModelAndView("solicitudCliente");

        try {
            List<?> serviciosList = servicioService.listarServicios();
            request.setAttribute("serviciosList", serviciosList);

            HttpSession session = request.getSession();
            session.setAttribute(SERVICIO_LIST, serviciosList);

            Usuario voUsuario = (Usuario) session.getAttribute(USUARIO_ACT);
            request.setAttribute("usuario", voUsuario);

            String fecha = (String) session.getAttribute(FECHA_ACT);
            request.setAttribute("now", fecha);

        } catch (ServiceException ex) {
            //System.err.println(ex.toString());
            logger.error(ex.toString());
        } catch (Exception ex) {
            //System.err.println(ex.toString());
            logger.error(ex.toString());
        }

        request.setAttribute("solicitud", solicitudForm);
        return modelAndView;
    }

    public ModelAndView buscar(HttpServletRequest request, HttpServletResponse response, Solicitud solicitudForm) {
        ModelAndView modelAndView = new ModelAndView("solicitudCliente");
        HttpSession session = request.getSession();

        try {
            Usuario voUsuario = (Usuario) session.getAttribute(USUARIO_ACT);
            solicitudForm.setUsuario(voUsuario);
            Servicio servicio = new Servicio();
            servicio.setIdServicio(Integer.parseInt(solicitudForm.getIdServicio()));
            solicitudForm.setServicio(servicio);

            //System.out.print("usuario: " + voUsuario.getIdUsuario() + " servicio: " + solicitudForm.getIdServicio());
            logger.info("usuario: " + voUsuario.getIdUsuario() + " servicio: " + solicitudForm.getIdServicio());
            List<Solicitud> voList = solicitudService.listarSolicitudesPorServicio(solicitudForm);
            //System.out.print("lista busqueda: " + voList.size());
            logger.info("lista busqueda: " + voList.size());

            //  String fechaActual = CalendarFormater.obtenerFecha();
            modelAndView.addObject("voList", voList);

        } catch (ServiceException ex) {
            //System.err.println(ex.toString());
            logger.error(ex.toString());
        } catch (Exception ex) {
            //System.err.println(ex.toString());
            logger.error(ex.toString());
        }

        request.setAttribute("solicitud", solicitudForm);
        request.setAttribute("serviciosList", session.getAttribute(SERVICIO_LIST));
        request.setAttribute("usuario", session.getAttribute(USUARIO_ACT));
        request.setAttribute("now", session.getAttribute(FECHA_ACT));
        return modelAndView;
    }

    public ModelAndView redireccionar(HttpServletRequest request, HttpServletResponse response, Solicitud solicitudForm) throws ServiceException {
        request.setAttribute("solicitud", solicitudForm);
        return new ModelAndView("redirect:/solicitud.htm");

    }
}
